﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CAD.BLL;
using CAD.DTO;

namespace WFASmartketing.PRESENTACION_VENTAS
{
    public partial class AddProducto : Form
    {
        private PRESENTACION_VENTAS.RegistroVentas principal;
        private int almacen;
        private int pkProducto;
        private int cantidadOficial = 0;
        public AddProducto(PRESENTACION_VENTAS.RegistroVentas principal,int almacen)
        {
            InitializeComponent(); 
            this.principal = principal;
            this.almacen = almacen;
            recargarGrid();
        }

        private void AddProducto_Load(object sender, EventArgs e)
        {
            agarrarFilaAlCargar();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            recargarGrid();
        }
        private void recargarGrid() {
            this.inventario_addProductoVentaTableAdapter.Fill(this.ventaInventarioProductoDS.inventario_addProductoVenta, "%" + textBox1.Text + "%", almacen);
            this.dataGridView1.Refresh(); agarrarFilaAlCargar();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            recargarGrid();
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            agarrarFilaAlCargar();
        }
        private void agarrarFilaAlCargar()
        {
            if (dataGridView1.CurrentRow != null)
            {
                int id = (int)dataGridView1.CurrentRow.Cells[0].Value;
                pkProducto = id;
                producto pro = productoBLL.SelectByID(pkProducto);
                txtprecio.Text = pro.Precioventaunitario + "";
                txtcantidad.Text = dataGridView1.CurrentRow.Cells[5].Value.ToString();
                cantidadOficial = (int)dataGridView1.CurrentRow.Cells[5].Value;
            }
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            
            producto pro = productoBLL.SelectByID(pkProducto);
            int cantidad = 0;
            try
            {
                pro.Precioventaunitario = Convert.ToDouble(txtprecio.Text);
                cantidad = Convert.ToInt32(txtcantidad.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, "Algunos datos estan en mal formato", "ADVERTENCIA");
                return;
            }
            if (cantidad >
                cantidadOficial)
            {
                MessageBox.Show(this, "La cantidad seleccionada excede a la cantidad en inventario: Cant. "+cantidadOficial, "ADVERTENCIA");
                txtcantidad.Text = cantidadOficial+"";
                return;
            }
            principal.cargarProductoalGrid(pro, cantidad);
            this.Hide();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            this.Hide();
        }

        private void txtcantidad_TextChanged(object sender, EventArgs e)
        {
            calculoDeCostos();
        }
        private void calculoDeCostos()
        {
            string cantidadstr = txtcantidad.Text;
            int cantidad = 1;
            try
            {
                cantidad = Convert.ToInt32(cantidadstr);
            }
            catch (Exception ex)
            {
                txtcantidad.Text = "1";
            }
            string costostr = txtprecio.Text;
            double costo = 0;
            try
            {
                costo = Convert.ToDouble(costostr);
            }
            catch (Exception ex)
            {
                txtprecio.Text = "0";
            }
            double total = costo * cantidad;
            txttotal.Text = total + "";
        }

        private void txtprecio_TextChanged(object sender, EventArgs e)
        {
            calculoDeCostos();
        }

        private void txtprecio_KeyPress(object sender, KeyPressEventArgs e)
        {
            UTIIIDADES.UTILIDADES.soloDecimanes(e, txtprecio);
        }

        private void txtcantidad_KeyPress(object sender, KeyPressEventArgs e)
        {
            UTIIIDADES.UTILIDADES.soloEnteros(e);
         
        }
    }
}
